遍历HashMap的几种方式以及如何获得Hashmap的key和Vaue

您所在的位置:网站首页 java foreach循环判断为最后一个 遍历HashMap的几种方式以及如何获得Hashmap的key和Vaue

遍历HashMap的几种方式以及如何获得Hashmap的key和Vaue

2023-07-24 07:42| 来源: 网络整理| 查看: 265

一般用的时候分为以下几种情况。

For-Each循环是Java5新引入的,遍历的map是null的话,For-Each循环会抛出NullPointerException异常,所以在遍历之前你应该判断是否为空引用。

1. 遍历key(比entrySet迭代快一点点)

这个方法比entrySet迭代具有轻微的性能优势(大约快10%)

for(Integer key: map.keySet()){ System.out.println(key); } 2. 遍历value(比entrySet迭代快一点点)

这个方法比entrySet迭代具有轻微的性能优势(大约快10%)

for(Integer value : map.values()){ System.out.println(value); } 3. 同时遍历key和value

可以用以下几种方式。

3.1 用entrySet() + foreach (用!) for(Map.Entry entry : map.entrySet()){ System.out.println(entry.getKey()+" " +entry.getValue()); } 3.2 用entrySet() + 迭代器 (使劲用!)

相当于获得键值对集合entry,并遍历

//返回的是entry类型的迭代器 Iterator it = map.entrySet().iterator(); //返回时没声明it的类型,it.next()需要强转 // Iterator it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry entry = it.next(); System.out.println(entry.getKey() + " " +entry.getValue()); } 3.3 keySet + foreach (耗时,不推荐)

keySet拿到key,get一下就可以在同一个for循环内拿到value

这个方法看上去更简洁,但是实际上它更慢更低效,通过key得到value值更耗时。

for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println(key+ " " +value); } 3.4 用keySet+ 迭代器(耗时,不推荐)

获得键集合,并遍历,拿到key,通过key去get值。

这个方法看上去更简洁,但是实际上它更慢更低效,通过key得到value值更耗时。

//返回时声明了it是Integet类型的迭代器,不用强转 //Iterator it = map.keySet().iterator(); //返回时没声明it的类型,it.next()需要强转 Iterator it = map.keySet().iterator(); while(it.hasNext()){ // Integer key = it.next(); Integer key = (Integer)it.next(); Integer value = map.get(key); System.out.println(key + "" + value); } 以上代码汇总后如下。 import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapTraversal { public static void main(String[] args){ HashMap map = new HashMap(); map.put(3, 6); map.put(2, 5); Traversal01(map); Traversal02(map); Traversal03(map); Traversal04(map); Traversal05(map); } // entrySet() 用for循环拿到entry public static void Traversal01(HashMap map){ for(Map.Entry entry : map.entrySet()){ System.out.println(entry.getKey()+" " +entry.getValue()); } } // keySet() 用for循环拿到key public static void Traversal00(HashMap map){ for(Integer key : map.keySet()){ Integer System.out.println(entry.getKey()+" " +entry.getValue()); } } // 单独拿到keys(用keySet()) 或者单独拿到values(map.values()) public static void Traversal02(HashMap map){ for(Integer key: map.keySet()){ System.out.println(key); } for(Integer value : map.values()){ System.out.println(value); } } // keySet拿到key,get一下就可以在同一个for循环内拿到value public static void Traversal03(HashMap map){ for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println(key+ " " +value); } } // entryset迭代器 获得键值对集合entry,并遍历 public static void Traversal04(HashMap map){ //返回的是entry类型的迭代器 Iterator it = map.entrySet().iterator(); //返回时没声明it的类型,it.next()需要强转 // Iterator it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry entry = it.next(); System.out.println(entry.getKey() + " " +entry.getValue()); } } // keyset迭代器 获得键集合,并遍历,拿到key,通过key去get值。 public static void Traversal05(HashMap map){ //返回时声明了it是Integet类型的迭代器,不用强转 //Iterator it = map.keySet().iterator(); //返回时没声明it的类型,it.next()需要强转 Iterator it = map.keySet().iterator(); while(it.hasNext()){ // Integer key = it.next(); Integer key = (Integer)it.next(); Integer value = map.get(key); System.out.println(key + "" + value); } } }

 

 

 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3